/*
 * Copyright 2010 Chad Retz
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.sun.javadoc;

import com.google.common.annotations.GwtCompatible;

/**
 * @author Chad Retz
 */
@GwtCompatible(emulated = true)
public interface ClassDoc extends ProgramElementDoc, Type {

    ConstructorDoc[] constructors();

    ConstructorDoc[] constructors(boolean filter);

    boolean definesSerializableFields();

    FieldDoc[] enumConstants();

    FieldDoc[] fields();

    FieldDoc[] fields(boolean filter);

    ClassDoc findClass(String className);

    @Deprecated
    ClassDoc[] importedClasses();

    @Deprecated
    PackageDoc[] importedPackages();

    ClassDoc[] innerClasses();

    ClassDoc[] innerClasses(boolean filter);

    ClassDoc[] interfaces();

    Type[] interfaceTypes();

    boolean isAbstract();

    boolean isExternalizable();

    boolean isSerializable();

    MethodDoc[] methods();

    MethodDoc[] methods(boolean filter);

    FieldDoc[] serializableFields();

    MethodDoc[] serializationMethods();

    boolean subclassOf(ClassDoc cd);

    ClassDoc superclass();

    Type superclassType();

    TypeVariable[] typeParameters();

    ParamTag[] typeParamTags();

}


